package com.daiyang.campus_lucky_draw.common.result;

import com.daiyang.campus_lucky_draw.common.error.ErrorCode;
import com.daiyang.campus_lucky_draw.common.error.GlobalErrorCodeConstants;
import lombok.Data;
import org.springframework.util.Assert;

import java.io.Serializable;
import java.util.Objects;

@Data
public class CommonReslut<T> implements Serializable {
    private Integer code;
    private String msg;
    private T data;
    public CommonReslut() {

    }



    public static <T> CommonReslut<T> success(T data) {
        CommonReslut<T> reslut =new CommonReslut<>();
        reslut.code= GlobalErrorCodeConstants.SUCCESS.getCode();
        reslut.setData(data);
        reslut.msg= GlobalErrorCodeConstants.SUCCESS.getMsg();
        return reslut;

    }
    public static <T> CommonReslut<T> error(Integer code,String msg) {
        Assert.isTrue(!GlobalErrorCodeConstants.SUCCESS.getCode().equals(code),"错误码不能为成功不能为200");
        CommonReslut<T> reslut = new CommonReslut<>();
        reslut.setCode(code);
        reslut.setMsg(msg);
        return reslut;
    }
    public static <T> CommonReslut<T> error(ErrorCode errorCode) {
       return  error(errorCode.getCode(),errorCode.getMsg());
    }
    /**
     * 将传⼊的 result 对象，转换成另外⼀个泛型结果的对象
     *
     * @param reslut 传⼊的 result 对象
     * @param <T> 返回的泛型
     * @return 新的 CommonResult 对象
     */
    public static <T> CommonReslut<T> error(CommonReslut<T> reslut) {
        return error(reslut.getCode(),reslut.getMsg());
    }
    public static boolean isSuccess(Integer code) {
        return Objects.equals(code,
                GlobalErrorCodeConstants.SUCCESS.getCode());
}
}
